package org.song.model.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;

@ApiModel("")
@Table(name = "`menu`")
@Data
public class MenuEntity {
    /**
     * 主键
     */
    @Id
    @Column(name = "`id`")
    @ApiModelProperty("主键")
    private Long id;

    /**
     * 父菜单Id
     */
    @Column(name = "`pid`")
    @ApiModelProperty("父菜单Id")
    private Long pid;

    /**
     * 菜单名
     */
    @Column(name = "`name`")
    @ApiModelProperty("菜单名")
    private String name;

    /**
     * 菜单类型 0：主页菜单 1：管理项目菜单
     */
    @Column(name = "`type`")
    @ApiModelProperty("菜单类型 0：主页菜单 1：管理项目菜单")
    private Byte type;

    /**
     * 禁用：0：启用 1：禁用
     */
    @Column(name = "`enabled`")
    @ApiModelProperty("禁用：0：启用 1：禁用")
    private Byte enabled;

    /**
     * 删除：0：未删除 1：已删除
     */
    @Column(name = "`deleted`")
    @ApiModelProperty("删除：0：未删除 1：已删除")
    private Byte deleted;

    /**
     * 创建人Id
     */
    @Column(name = "`creator_id`")
    @ApiModelProperty("创建人Id")
    private Long creatorId;

    /**
     * 创建时间
     */
    @Column(name = "`create_time`")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 修改时间
     */
    @Column(name = "`modify_time`")
    @ApiModelProperty("修改时间")
    private Date modifyTime;

    @ApiModelProperty( value = "子菜单集合")
    private List<MenuEntity> children;

    public List<MenuEntity> getChildren() {
        return children;
    }

    public void setChildren(List<MenuEntity> children) {
        this.children = children;
    }

    /**
     * 获取主键
     *
     * @return id - 主键
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置主键
     *
     * @param id 主键
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取父菜单Id
     *
     * @return pid - 父菜单Id
     */
    public Long getPid() {
        return pid;
    }

    /**
     * 设置父菜单Id
     *
     * @param pid 父菜单Id
     */
    public void setPid(Long pid) {
        this.pid = pid;
    }

    /**
     * 获取菜单名
     *
     * @return name - 菜单名
     */
    public String getName() {
        return name;
    }

    /**
     * 设置菜单名
     *
     * @param name 菜单名
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取菜单类型 0：主页菜单 1：管理项目菜单
     *
     * @return type - 菜单类型 0：主页菜单 1：管理项目菜单
     */
    public Byte getType() {
        return type;
    }

    /**
     * 设置菜单类型 0：主页菜单 1：管理项目菜单
     *
     * @param type 菜单类型 0：主页菜单 1：管理项目菜单
     */
    public void setType(Byte type) {
        this.type = type;
    }

    /**
     * 获取禁用：0：启用 1：禁用
     *
     * @return enabled - 禁用：0：启用 1：禁用
     */
    public Byte getEnabled() {
        return enabled;
    }

    /**
     * 设置禁用：0：启用 1：禁用
     *
     * @param enabled 禁用：0：启用 1：禁用
     */
    public void setEnabled(Byte enabled) {
        this.enabled = enabled;
    }

    /**
     * 获取删除：0：未删除 1：已删除
     *
     * @return deleted - 删除：0：未删除 1：已删除
     */
    public Byte getDeleted() {
        return deleted;
    }

    /**
     * 设置删除：0：未删除 1：已删除
     *
     * @param deleted 删除：0：未删除 1：已删除
     */
    public void setDeleted(Byte deleted) {
        this.deleted = deleted;
    }

    /**
     * 获取创建人Id
     *
     * @return creator_id - 创建人Id
     */
    public Long getCreatorId() {
        return creatorId;
    }

    /**
     * 设置创建人Id
     *
     * @param creatorId 创建人Id
     */
    public void setCreatorId(Long creatorId) {
        this.creatorId = creatorId;
    }

    /**
     * 获取创建时间
     *
     * @return create_time - 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取修改时间
     *
     * @return modify_time - 修改时间
     */
    public Date getModifyTime() {
        return modifyTime;
    }

    /**
     * 设置修改时间
     *
     * @param modifyTime 修改时间
     */
    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    }
}
